#include <bits/stdc++.h>
using namespace std;
#define int long long
int dx[4]={-1,1,0,0};
int dy[4]={0,0,-1,1};
int n,m;
vector<vector<char>> v;
vector<vector<int>> w,dp;
void dfs(int x,int y,int c,int d)
{
    if(dp[x][y]&&dp[x][y]<=c)return ;
    dp[x][y]=c;
    if(d==0)v[x][y]='v';
    if(d==1)v[x][y]='^';
    if(d==2)v[x][y]='>';
    if(d==3)v[x][y]='<';
    for(int i=0;i<4;i++)
    {
        int xx=x+dx[i],yy=y+dy[i];
        if(xx<1||xx>n||yy<1||yy>m||v[xx][yy]=='#'||v[xx][yy]=='E')continue;
        dfs(xx,yy,c+1,i);
    }
}
void solve()
{
    cin>>n>>m;
    v=vector<vector<char>>(n+1,vector<char> (m+1));
    dp=w=vector<vector<int>>(n+1,vector<int> (m+1));
    queue<pair<int,int>> q;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            cin>>v[i][j];
            if(v[i][j]=='E')
            {
                q.push({i,j});
            }
        }
    }
    while(!q.empty())
    {
        auto xmz=q.front();
        q.pop();
        int x=xmz.first,y=xmz.second;
        
        for(int i=0;i<4;i++)
        {
            int xx=x+dx[i],yy=y+dy[i];
            if(xx<1||xx>n||yy<1||yy>m||dp[xx][yy]||v[xx][yy]=='#'||v[xx][yy]=='E')continue;
            q.push({xx,yy});
            dp[xx][yy]=1;
            if(i==0)v[xx][yy]='v';
            if(i==1)v[xx][yy]='^';
            if(i==2)v[xx][yy]='>';
            if(i==3)v[xx][yy]='<';
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            cout<<v[i][j];
        }
        cout<<endl;
    }
}
signed main()
{
    //ios::sync_with_stdio(false);
    //cin.tie(nullptr);
    int T=1;
    //cin>>T;
    while(T--)
    {
       solve();
    }
    return 0;
}